//
//  ZDQRCodeManager.h
//  ZDQRCodeManager
//
//  Created by mac on 2019/10/28.
//  Copyright © 2019 北京定辉文化传媒有限公司. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface YSQRCodeManager : NSObject

/// 类方法创建Manager 不是单例
+ (instancetype)manager;

/// 添加扫描相机
/// @param controller 当前控制器
/// @param completion 扫描完成回调
- (void)scanQRCodeWithController:(UIViewController *)controller completion:(void(^)(YSQRCodeManager *manager, NSString *result))completion;

/// 添加扫描相机
/// @param controller 当前控制器
/// @param completion 扫描完成回调
/// @param scanBrightnessBlock 光线回调
- (void)scanQRCodeWithController:(UIViewController *)controller completion:(void(^)(YSQRCodeManager *manager, NSString *result))completion scanBrightness:(void(^)(YSQRCodeManager *manager, CGFloat brightness))scanBrightnessBlock;

/// 开始扫描
- (void)startRunning;
/// 停止扫描
- (void)stopRunning;
/// 打开闪光灯
- (void)openFlashlight;
/// 关闭闪光灯
- (void)closeFlashlight;

#pragma mark - - 相册中读取二维码相关方法
/** 创建相册并获取相册授权方法 */
- (void)establishAuthorizationQRCodeObtainAlbumWithController:(UIViewController *)controller;
/** 判断相册访问权限是否授权 */
@property (nonatomic, assign) BOOL isPHAuthorization;
/** 图片选择控制器取消按钮的点击回调方法 */
- (void)setBlockWithQRCodeObtainAlbumDidCancelImagePickerController:(void(^)(YSQRCodeManager *manager))block;
/** 相册中读取图片二维码信息回调方法 */
- (void)setBlockWithQRCodeObtainAlbumResult:(void(^)(YSQRCodeManager *manager, NSString *result))block;

#pragma mark - - 生成二维码相关方法
/// 生成二维码
/// @param content 内容
/// 默认生成宽高为375的图片
+ (UIImage *)genQRCode:(NSString *)content;

/**
 *  生成二维码
 *
 *  @param data    二维码数据
 *  @param size    二维码大小
 */
+ (UIImage *)generateQRCodeWithData:(NSString *)data size:(CGFloat)size;
/**
 *  生成二维码（自定义颜色）
 *
 *  @param data     二维码数据
 *  @param size     二维码大小
 *  @param color    二维码颜色
 *  @param backgroundColor    二维码背景颜色
 */
+ (UIImage *)generateQRCodeWithData:(NSString *)data size:(CGFloat)size color:(UIColor *)color backgroundColor:(UIColor *)backgroundColor;
/**
 *  生成带 logo 的二维码（推荐使用）
 *
 *  @param data     二维码数据
 *  @param size     二维码大小
 *  @param logoImage    logo
 *  @param ratio        logo 相对二维码的比例（取值范围 0.0 ～ 0.5f）
 */
+ (UIImage *)generateQRCodeWithData:(NSString *)data size:(CGFloat)size logoImage:(UIImage *)logoImage ratio:(CGFloat)ratio;
/**
 *  生成带 logo 的二维码（拓展）
 *
 *  @param data     二维码数据
 *  @param size     二维码大小
 *  @param logoImage    logo
 *  @param ratio        logo 相对二维码的比例（取值范围 0.0 ～ 0.5f）
 *  @param logoImageCornerRadius    logo 外边框圆角（取值范围 0.0 ～ 10.0f）
 *  @param logoImageBorderWidth     logo 外边框宽度（取值范围 0.0 ～ 10.0f）
 *  @param logoImageBorderColor     logo 外边框颜色
 */
+ (UIImage *)generateQRCodeWithData:(NSString *)data
                               size:(CGFloat)size
                          logoImage:(UIImage *)logoImage
                              ratio:(CGFloat)ratio
              logoImageCornerRadius:(CGFloat)logoImageCornerRadius
               logoImageBorderWidth:(CGFloat)logoImageBorderWidth
               logoImageBorderColor:(UIColor *)logoImageBorderColor;

@end
